package koby99;

import java.util.Scanner;

public class J14_Array {

	// 배열array
	// 지금까지 우리가 사용한 변수는
	// 하나의 저장영역에 하나의 이름으로
	// 하나의 값만을 저장해었음
	// 만일, 데이트 건수가 여려 개인 경우
	// 변수를 여러 개 선언해서 사용해아함
	// 학생 학명의 성적처리 : 변수 7개 가량 사용
	// 학생 열명의 성적처리 : 변수 7*10개 가량 사용
	// 이렇게 하면 작성해야 하는 코드도 많아지고
    // 반복문 사용도 힘들어짐
	
	// 자바에서는 동일한 자료형의 객체나 기본자료형을
	// 묶어서group 배열로 사용할 수 있음
	
	// 배열에 속하는 각 개체는 "배열의 구성요소"라 함
	// 배열에서 각 구성요소의 갯수를 알아내려면 length 필드를 이용
	// 배열의 값을 저장하거나 읽기위해 각 구성요소에
	// 접근하려면 index(위지)를 지정해야 함
	// 배열의 ibdex는 0부터 시작함
	// 배열은 일단 크기가 정해지면 변경 불가

	public static void main(String[] args) {
		
		//배열을 사용하지 않은 성적처리 프로그램
		int stno1 = 123456789; //학생번호 
		int guk1 = 89;         //국어
		int eng1 = 70;         //영어
		int mat1 = 68;         //수학
		
		int stno2 = 145456789; //학생번호 
		int guk2 = 89;         //국어
		int eng2 = 70;         //영어
		int mat2 = 68;         //수학
		
		int stno3 = 123676789; //학생번호 
		int guk3 = 89;         //국어
		int eng3 = 70;         //영어
		int mat3 = 68;         //수학
		
		int tot1 = guk1 + eng1+ mat1;
		int tot2 = guk2 + eng2+ mat2;
		int tot3 = guk3 + eng3+ mat3;
		
		//배열을 사용하는 프로그램 int[] 변수명 = new int[변숫숫자]
		int[] stdno = new int[3]; 
		int kor[] = new int[3];
		//두가지 방법으로 사용가능하나 첫번째가 가독성이 좋기에 애용하자
		int[] eng = new int[3];
		int[] mat = new int[3];
		
		//배열의 구성요소에 값 저장
		stdno[0] = 123456;
		stdno[1] = 456123;
		stdno[2] = 287456;
				
		System.out.println(stdno); // [I@5f4fcc96 이게 값이 나오는데 I는 데이터형 @다음것은 위치이다.
		System.out.println(stdno[0]);
		System.out.println(stdno[1]);
		System.out.println(stdno[2]);
		
			kor[0] = 99;
			kor[1] = 70;
			kor[2] = 80;
		System.out.println(kor);	
		System.out.println(kor[0]);	
		System.out.println(kor[1]);	
		System.out.println(kor[2]);	
		
		    eng[0] = 99;
			eng[1] = 98;
			eng[2] = 86;
		System.out.println(eng);	
		System.out.println(eng[0]);	
		System.out.println(eng[1]);	
		System.out.println(eng[2]);	
			
			mat[0] = 70;
			mat[1] = 89;
			mat[2] = 99;
		System.out.println(mat);
		System.out.println(mat[0]);
		System.out.println(mat[1]);
		System.out.println(mat[2]);
		
		int[] cuon = new int[3];
		/*cuon[0] = kor[0] + eng[0] + mat [0];
		cuon[1] = kor[1] + eng[1] + mat [1];
		cuon[2] = kor[2] + eng[2] + mat [2]; 
		*/
		//지정된 영역을 주석처리할때 ctrl shift 슬레쉬, 역슬레쉬를 하면된다.
	    for(int i = 0; i <= 2; ++i)
	    	cuon[i] = kor[i] + eng[i] + mat [i];
	        //여기다가 평균과 학점을 같이넣어주면 한번에 값을 모두 지정할 수 있다. 
	    System.out.println(cuon);
	    System.out.println(cuon[0]);
	    System.out.println(cuon[1]);
	    System.out.println(cuon[2]);
	    
	    // 문제 1: 복권 추첨을 위한 난수 6개 만들어 
	    //     myLotto라는 배열에 저장하고  모두 출력
	    //     로또 6/45에 근거해서 1-45 범위 내 난수 사용
	    int[] yourKey = new int[6];
		int[] myKey = new int[6];
		
		yourKey[0] = (int)(Math.random() * 45);
		yourKey[1] = (int)(Math.random() * 45);
		yourKey[2] = (int)(Math.random() * 45);
		yourKey[3] = (int)(Math.random() * 45);
		yourKey[4] = (int)(Math.random() * 45);
		yourKey[5] = (int)(Math.random() * 45);
		
		
		for(int v= 0; v<=5; v++){
		yourKey[v] = (int)(Math.random() * 45)+1;
		System.out.println(yourKey[v]);
		}
		//일단 만들고
		//같은갯수가 6개 , 5개 차순으로 하는 스위츠를 하면 될듯
				
		// 배열 선언 및 초기화
		char[] grade = {'수','우','미','양','가'};
		// 위에 식은 
		// char[] grade = {new char[5]
		// grade[0]= '수'.... 이걸 간단하게 쓴식이다
		for(int i = 0; i < grade.length; ++i)
			System.out.println( grade[i]);
		System.out.println( grade.length);
		// grade.length은 선언된 []값의 최대 값을 지정하는 단어이다.
		
		// Iterating on Array
		// JDK5 이전에서는 for문과 배열의 ibdex를 이용해서
		// 배열의 값을 출력했음
		// JDK5 이상에서는 for문이 향상되었음
		// 즉, 배열의 ibdex 없이 배열을 반복처리 가능
		// for( 배열의 구성 요소 자료형 : 배열명)
		for (char g : grade)
			System.out.println(g);
		// grade형의 값이 더 나올때가 없을때까지 구한다
		
		for (int s : stdno)
			System.out.println(s);
		
		for (int d : kor)
			System.out.println(d);
		
		for (int a : eng)
			System.out.println(a);
		
		for (int q : mat)
			System.out.println(q);
		
		for (int e : yourKey)
			System.out.println(e);
		
		
		
	}
}
